// Names of all actions which can be performed by all model
// Copyright 2005 (C) Ralph Thomas

#ifndef MODEL_ACTION_NAMES_H
#define MODEL_ACTION_NAMES_H

namespace model {
	//
	/// All actions have names and they are given to model::execute
	/// to specify which action to perform.
	//
	//
	/// kAuthenticate : authenticationManager::account
	///
	/// Models are given the authentication information which
	/// they require in this action. When a model is instanciated
	/// it will try to look for a pre-existing connection to the
	/// resource. If they find one they will either use or clone
	/// it. If they cannot find one then they will make a request
	/// to the authenicationManager for the username and password
	/// to use to connect with. When the authenticationManager has
	/// either extracted the required information from it's files
	/// or from the user it will ask the model to "authenicate"
	/// with the given accountInfo.
	///
	/// The model can never assume that the authenticationManager
	/// will ever get back to it. Only the authenicationManager is
	/// allowed to use this action and models will ignore all but
	/// the first authenticate request (as it's not possible to
	/// reauthenticate with some remote protocols).
	//
	extern const char* kAuthenticate;
	//
	/// kRotate : unsigned int -- 90, 180, 270.
	///
	/// Models for JPEG images can rotate the images without
	/// losing any data. Eventually other image models will support
	/// this action, too.
	///
	/// The argument for this action is the number of degrees to
	/// rotate by, but it must be either 90, 180 or 270.
	//
	extern const char* kRotate;
	//
	/// kTryDrop : std::string (url), returns bool.
	///
	/// This action returns a boolean indicating if this model can
	/// accept a drop of the given URL or not. If the URL is empty
	/// then this action returns generally if it can accept a drop
	/// or not (e.g.: is it read-only or not).
	//
	extern const char* kTryDrop;
	//
	/// kDrop : std::string (url), returns bool.
	///
	/// Drop the given URL onto this model. This method returns
	/// false if the given URL can't be dropped onto this model.
	//
	extern const char* kDrop;
};

#endif

